import mysql.connector
import random
from datetime import datetime, timedelta

# 数据库连接配置
db_config = {
    'host': 'localhost',
    'port': 3306,
    'user': 'root',
    'password': 'root',
    'database': 'smart-parking'
}
    # 数据库连接配置
# db_config = {
#     'host': 'localhost',
#     'port': 3307,
#     'user': 'root',
#     'password': 'root',
#     'database': 'boot_reservation'
# }

# 连接到数据库
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor()

# 获取今天的日期
# 计算今天日期
today = datetime.now()
# 计算7天前的日期
seven_days_ago = today - timedelta(days=7)

# 随机选择一个日期
random_date = seven_days_ago + timedelta(days=random.randint(0, 7))

# 随机选择时间段（10:00到22:00）
random_hour = random.randint(10, 22)
random_minute = random.randint(0, 59)

# 组合日期和时间
random_datetime = random_date.replace(hour=random_hour, minute=random_minute)


# 获取所有表的名称
cursor.execute("SHOW TABLES")
tables = cursor.fetchall()

# 遍历每个表
for table in tables:
    table_name = table[0]
    print(f"Processing table: {table_name}")

    # 查询表中的列信息
    cursor.execute(f"DESCRIBE {table_name}")
    columns = cursor.fetchall()

    # 遍历列，查找日期类型字段并更新
    for column in columns:
        column_name = column[0]
        column_type = column[1]

        # 获取今天的日期
        # 计算今天日期
        # today = datetime.now()
        # # 计算7天前的日期
        # seven_days_ago = today - timedelta(days=7)
        #
        # # 随机选择一个日期
        # random_date = seven_days_ago + timedelta(days=random.randint(0, 7))
        #
        # # 随机选择时间段（10:00到22:00）
        # random_hour = random.randint(10, 22)
        # random_minute = random.randint(0, 59)
        #
        # # 组合日期和时间
        # random_datetime = random_date.replace(hour=random_hour, minute=random_minute)


        if any(dt in column_type.lower() for dt in ['date', 'datetime', 'timestamp']):
            update_query = f"UPDATE {table_name} SET {column_name} = %s WHERE {column_name} IS NOT NULL"
            cursor.execute(update_query, (random_datetime.strftime('%Y-%m-%d %H:%M:%S'),))

# 提交更改并关闭连接
conn.commit()
cursor.close()
conn.close()

print("所有表的日期类型字段已更新为今天之前的7天日期。")